package day18_Reflection.demo04_var;

import java.lang.reflect.Field;

//使用方式
/*
Class类中用与成员变量赋值的方法
void set(Object obj,Object value):给obj对象的成员赋值value
注意:通过反射私有化成员不能直接赋值需要通过setAccessible方法
 */
public class Test01 {
    public static void main(String[] args) throws Exception {
        Class<User> userClass = User.class;//创建类
        User user = userClass.newInstance();//类的对象
        //公共的变量赋值
        Field age = userClass.getField("age");
        age.set(user,20);//object是类的对象
        Object o = age.get(user);//get(object obj)是获取值得方法
        System.out.println(o);
        System.out.println(user.age);
        System.out.println("--------");
        //全部的变量赋值
        Field num = userClass.getDeclaredField("num");
        num.setAccessible(true);//通过反射私有化构造不能直接创建对象需要通过setAccessible方法
        num.set(user,"csw");
        Object o1 = num.get(user);
        System.out.println(o1);
        Field sum = userClass.getDeclaredField("sum");
        sum.setAccessible(true);
        sum.set(user,30);
        Object o2 = sum.get(user);
        System.out.println(o2);
    }
}
